import { http } from "@/utils/http";

export type ResultTable<T> = Partial<{
  total?: number;
  pageNum: number;
  pageSize: number;
  data?: Array<T>;
}>;
export type TaskTableItem = Partial<{
  id: number; //主键id
  taskNo: string; // 任务(工单)编号
  planNo: string; // 所属计划编号
  taskName: string; // 任务名称
  startTime: string; // 任务开始时间
  endTime: string; // 任务结束时间
  factoryAreaCode: string; // 地块区域编码
  factoryAreaDesc: string; // 地块区域名称
  taskStatus: number; // 状态编码
  taskStatusDesc: string; // 状态名称
  taskType: number; // 任务类型编码
  taskTypeDesc: string; // 任务类型文案
  checkGroupCode: string; // 执行组执行组编码
  checkGroupDesc: string; // 执行组文案
  checkArea: string;
  checkAreaDesc: string;
  submitTime: number; // 最后执行时间
}>;
export type TaskDetailType = Partial<{
  eqpList: any[];
  ruleDTOList: any[];
  [key: string]: any;
}>;
// 分页查询巡检任务
export const checkTaskCalendar = (data?: object) => {
  return http.request<object>("post", "/erc/api/v1/checkTask/calendar", {
    data
  });
};
// 分页查询巡检任务
export const queryTaskTable = (data?: object) => {
  return http.request<ResultTable<TaskTableItem>>("post", "/erc/api/v1/checkTask/pageList", {
    data
  });
};

// 撤回审核
export const taskBack = (taskNo: string) => {
  return http.request<boolean>("post", `/erc/api/v1/checkTask/back/`, { data: { taskNo } });
};

// 取消任务
export const cancelTask = (data: object) => {
  return http.request<boolean>("post", `/erc/api/v1/checkTask/cancel`, { data });
};

// 执行任务
export const executeTask = (taskNo: string) => {
  return http.request<boolean>("get", `/erc/api/v1/checkTask/executeTask/${taskNo}`);
};

// 保存任务执行结果
export const saveTask = (data: object) => {
  return http.request<boolean>("post", `/erc/api/v1/checkTask/saveTask`, {
    data
  });
};
// 获取上传图片业务类型
export const getFileModelName = () => {
  return http.request<string>("get", "/erc/api/v1/checkTask/getFileModelName");
};
// 提交任务执行结果
export const submitTask = (data: object) => {
  return http.request<boolean>("post", `/erc/api/v1/checkTask/submitTask`, {
    data
  });
};
// 审核
export const acceptTask = (data?: object) => {
  return http.request<boolean>("post", "/erc/api/v1/checkTask/accept", {
    data
  });
};

// 转审
export const forwardReview = (data?: object) => {
  return http.request<boolean>("post", "/erc/api/v1/checkTask/forwardReview", {
    data
  });
};

// 新增巡检任务
export const checkTaskSave = (data?: object) => {
  return http.request<boolean>("post", "/erc/api/v1/checkTask/save", {
    data
  });
};
// 获取任务编号
export const getTaskNo = () => {
  return http.request<string>("post", "/erc/api/v1/checkTask/getTaskNo");
};
// 获取巡检任务详情
export const getTaskNoDetail = (taskNo?: string) => {
  return http.request<TaskDetailType>("get", `/erc/api/v1/checkTask/getByTaskNo/${taskNo}`);
};

//获取巡检计划详情
export const getByPlanNo = (data?: object) => {
  return http.request("post", `/erc/api/v1/checkPlan/getByPlanNo`, { data });
};
// 参数接口
export interface QueryWorkByRelatedOrderNumParams {
  /* */
  factoryId?: string;

  /* */
  pageNum?: number;

  /* */
  pageSize?: number;

  /* */
  orderByColumn?: string;

  /* */
  isAsc?: string;

  /*维修来源：CHECK 巡检，ALARM 报警 */
  maintenanceSource?: string;

  /*关联单号 */
  relatedOrderNum?: string;

  /*关联单号列表 */
  relatedOrderNumList?: Record<string, unknown>[];

  /* */
  orderBy?: string;
}

// 响应接口
export interface QueryWorkByRelatedOrderNumRes {
  /*主键id */
  id: number;

  /*维修工单编号 */
  workOrderCode: string;

  /*维修工单主题 */
  workOrderName: string;

  /*地块 */
  facCode: string;

  /*地块描述 */
  facCodeDesc: string;

  /*设备ID */
  eqpId: string;

  /*设备名称 */
  eqpName: string;

  /*设备位置编码 */
  positionCode: string;

  /*设备位置描述 */
  positionCodeDesc: string;

  /*设备地块 */
  eqpFacCode: string;

  /*设备地块描述 */
  eqpFacCodeDesc: string;

  /*优先级 */
  weight: string;

  /*优先级描述 */
  weightDesc: string;

  /*发起方式 */
  createMode: string;

  /*发起方式描述 */
  createModeDesc: string;

  /*异常描述 */
  faultDesc: string;

  /*故障图片 */
  faultImageList: {
    /* */
    id: number;

    /*文件原始名称 */
    originalName: string;

    /*文件名称 */
    fileName: string;

    /*文件类型：JPG/DOC/EXCEL 等 */
    fileType: string;

    /*文件大小，单位：K */
    fileSize: number;

    /*文件URL */
    fileUrl: string;

    /*所属模块名称：PROCESS/ENERGY/DIGITALTWINS 等 */
    moduleName: string;

    /*所属模块的记录ID */
    moduleId: number;

    /*所属用户ID */
    accountId: number;

    /*所属用户名称 */
    accountName: string;

    /*所属用户姓名 */
    realName: string;

    /*记录状态：VALID - 有效；INVALID - 无效 */
    status: string;

    /* */
    createTime: Record<string, unknown>;

    /* */
    updateTime: Record<string, unknown>;

    /*图片信息 */
    pic: Record<string, unknown>[];
  }[];

  /*计划开始时间 */
  planStartTime: Record<string, unknown>;

  /*计划结束时间 */
  planEndTime: Record<string, unknown>;

  /*接单维修时间 */
  acceptTime: Record<string, unknown>;

  /*维修完成时间 */
  completionTime: Record<string, unknown>;

  /*是否中断-0否，1是 */
  isStop: number;

  /*是否火警隔离-0否，1是 */
  isFireIsolation: number;

  /*故障类型 */
  faultType: string;

  /*故障类型描述 */
  faultTypeDesc: string;

  /*维修来源 */
  maintenanceSource: string;

  /*关联单号 */
  relatedOrderNum: string;

  /*执行人信息 */
  executorInfoList: {
    /*执行人ID */
    executorId: number;

    /*执行人名称 */
    executorName: string;
  }[];

  /*审批人ID */
  approverId: number;

  /*审批人名称 */
  approverName: string;

  /*工单状态：待维修，维修中，审核中，审核驳回，审核通过 */
  workOrderStatus: number;

  /*工单状态描述 */
  workOrderStatusDesc: string;

  /*报修人id */
  createBy: number;

  /*报修人姓名 */
  createName: string;

  /*报修时间 */
  createTime: Record<string, unknown>;

  /*是否在执行人行列 */
  isExecutor: boolean;

  /*备注 */
  remark: string;
}

/**
 * 根据关联单号查询工单
 * @param {object} params 查询工单参数
 * @param {string} params.factoryId
 * @param {number} params.pageNum
 * @param {number} params.pageSize
 * @param {string} params.orderByColumn
 * @param {string} params.isAsc
 * @param {string} params.maintenanceSource 维修来源：CHECK 巡检，ALARM 报警
 * @param {string} params.relatedOrderNum 关联单号
 * @param {array} params.relatedOrderNumList 关联单号列表
 * @param {string} params.orderBy
 * @returns
 */
export function queryWorkByRelatedOrderNum(data: QueryWorkByRelatedOrderNumParams): Promise<QueryWorkByRelatedOrderNumRes[]> {
  return http.post(`/erc/api/v1/maintenanceWorkOrder/queryWorkByRelatedOrderNum`, { data });
}
// 参数接口
export interface Export_1Params {
  /* */
  factoryId?: string;

  /* */
  facCode?: string;

  /* */
  hseAreaCode?: Record<string, unknown>[];

  /* */
  pageNum?: number;

  /* */
  pageSize?: number;

  /* */
  orderByColumn?: string;

  /* */
  isAsc?: string;

  /*计划编号 */
  planNo?: string;

  /*任务名称 */
  taskName?: string;

  /*地块 */
  factoryAreaCode?: string;

  /*任务状态 0-已取消,1-未开始,2-执行中,3-已完成,6-待审核 */
  taskStatus?: number;

  /*任务类型(来源) 1-巡检计划,2-临时任务 */
  taskType?: number;

  /*运维组code */
  checkGroupCode?: string;

  /*任务编号(导出) */
  taskNo?: string;

  /* */
  orderBy?: string;
}

// 响应接口
export interface Export_1Res {}

/**
 * 巡检任务导出
 * @param {object} params 设备巡检任务
 * @param {string} params.factoryId
 * @param {string} params.facCode
 * @param {array} params.hseAreaCode
 * @param {number} params.pageNum
 * @param {number} params.pageSize
 * @param {string} params.orderByColumn
 * @param {string} params.isAsc
 * @param {string} params.planNo 计划编号
 * @param {string} params.taskName 任务名称
 * @param {string} params.factoryAreaCode 地块
 * @param {number} params.taskStatus 任务状态 0-已取消,1-未开始,2-执行中,3-已完成,6-待审核
 * @param {number} params.taskType 任务类型(来源) 1-巡检计划,2-临时任务
 * @param {string} params.checkGroupCode 运维组code
 * @param {string} params.taskNo 任务编号(导出)
 * @param {string} params.orderBy
 * @returns
 */
export function export_1(data: Export_1Params): Promise<Export_1Res> {
  return http.post(`/erc/api/v1/checkTask/export`, { data });
}
